package com.mmy.controller.oa;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.mmy.domain.oa.MaterialBase;
import com.mmy.domain.sys.TSysUser;
import com.mmy.service.oa.impl.MaterialBaseServiceImpl;

/**
 * 类的介绍：物料信息
 *
 * @author shangzl
 * @date 创建日期：
 * @version 1.0
 */
@Controller
public class MaterialBaseController {

	@Autowired
	MaterialBaseServiceImpl materialBaseServiceImpl;

	/**
	 * 函数功能说明： 跳转
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-30
	 */
	@RequestMapping(value = "/materialbase")
	public String ToMaterialBase(Model model) {
		try {

			List<MaterialBase> lstMaterialBase = materialBaseServiceImpl.findAll();
			model.addAttribute("mblist", lstMaterialBase);
			return "OA/material/materialbase";
		} catch (Exception e) {

		}
		return null;

	}

	@RequestMapping(value = "/creatematerialbase")
	public String ToCreateMaterialBase() {
		return "OA/material/creatematerialbase";
	}

	/**
	 * 函数功能说明： 新建物料信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-30
	 */

	@RequestMapping(value = "/subcreatematerialbase")
	public String CreateMaterialBase(MaterialBase materialBase, HttpSession session) throws Exception {
//		获取最大值
		Object oMaterialID = materialBaseServiceImpl.getMaxMaterialID();
		/* 判断数据库是否存在菜单id 如果存在在最大值基础上加一 如果不存在把最大值置为一 */
		if (oMaterialID == null) {
			materialBase.setMaterialID(1);
			;
		} else {
			materialBase.setMaterialID((int) oMaterialID + 1);
		}
		String strMaterialName = materialBase.getMaterialName();

		try {

			/* 判断名称是否为空 */
			if (strMaterialName == "" || strMaterialName == null) {
				return "test";
			} else {
				/* 判断名称是否已存在 */
				if (materialBaseServiceImpl.findByMaterialName(strMaterialName).size() > 0) {

					return "test";
				} else {
					materialBase.setCreateDate(new Date());
					TSysUser tSysUser = (TSysUser) session.getAttribute("tSysUser");
					materialBase.setCreator(tSysUser.getUserName());
					materialBaseServiceImpl.save(materialBase.getMaterialID());
					materialBaseServiceImpl.save(materialBase);
					return "redirect:materialbase";

				}
			}

		} catch (Exception e) {

		}
		return null;
	}

	/**
	 * 函数功能说明： 删除物料信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-30
	 */

	@PostMapping("/delmaterialbase")
	@ResponseBody
	public String DelMaterialBase(String checkList) {

		String[] checklist = checkList.split(",");
		List<Integer> lstMaterialID = new ArrayList<>();

		for (String str : checklist) {
			lstMaterialID.add(Integer.parseInt(str));
		}

		materialBaseServiceImpl.delMaterialBase(lstMaterialID);

		return "OA/material/materialbase";
	}

	/**
	 * 函数功能说明： 修改物料信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-29
	 */

	@RequestMapping(value = "/enterupdatematerialbase")
	public String EnterUpdateMaterialBase(HttpServletRequest request, Model model) {

		int iMaterialID = Integer.parseInt(request.getParameter("iMaterialID"));

		MaterialBase materialBase = materialBaseServiceImpl.findByMaterialID(iMaterialID);
		model.addAttribute("materialBase", materialBase);
		return "OA/material/updatematerialbase";

	}

	@RequestMapping(value = "/updatematerialbase")
	public String UpdateMaterialBase(MaterialBase materialBase, HttpSession session) throws Exception {

		try {
			/* 定义一个新的实体类对象 */
			MaterialBase dmaterialBase = materialBaseServiceImpl.findByMaterialID(materialBase.getMaterialID());
			dmaterialBase.setMaterialName(materialBase.getMaterialName());
			dmaterialBase.setUnit(materialBase.getUnit());
			dmaterialBase.setNumber(materialBase.getNumber());
			dmaterialBase.setMemo(materialBase.getMemo());
			dmaterialBase.setModifyDate(new Date());
			TSysUser tSysUser = (TSysUser) session.getAttribute("tSysUser");
			dmaterialBase.setReviser(tSysUser.getUserName());
			materialBaseServiceImpl.save(dmaterialBase);
				return "redirect:materialbase";

		} catch (Exception e) {

		}
		return null;
	}

	/**
	 * 函数功能说明： 查询物料信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-30
	 */
	@RequestMapping(value = "/searchmaterialbase")
	public String FindMaterialBase(HttpServletRequest request, Model model) {

		String strMaterialName = request.getParameter("MaterialName");
		if (strMaterialName == "") {
			List<MaterialBase> lstMaterialBase = materialBaseServiceImpl.findAll();
			model.addAttribute("mblist", lstMaterialBase);
			request.setAttribute("strMaterialName", strMaterialName);
			return "OA/material/materialbase";
		} else {
			List<MaterialBase> lstMaterialBase = materialBaseServiceImpl.findByMaterialName(strMaterialName);
			model.addAttribute("mblist", lstMaterialBase);
			request.setAttribute("strMaterialName", strMaterialName);
			return "OA/material/materialbase";
		}

	}

}
